/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package stubs.negocio;
import interfaces.IGerenciaCliente;
import entidades.Cliente;
import erros.ErroAtualizacao;
import erros.ErroCadastramento;
import erros.ErroRecuperacao;

/**
 * stub simula a controladora gerencia cliente.
 * @author thiagostuckert
 */
public class StubCntrGerenciaCliente implements IGerenciaCliente {
    /**
     * Cpf utilizado para identificar o cliente que sera cadastrado com
     * sucesso no banco.
     */
    private static final String CPF_SUCESSO = "47149064108";
    /**
     * Nome utilizado para identificar sucesso.
     */
    private static final String NOME_SUCESSO = "Daniel";
    /**
     * Telefone utilizado para representar sucesso.
     */
    private static final String TELEFONE_SUCESSO  = "0123456789";

    /**
     * Cadastra o cliente representado pelo objeto cliente.
     * @param cliente cliente a ser armazenado.
     * @throws ErroCadastramento erro lançado caso a ação não
     * obtenha sucesso.
     */
    @Override
    public void cadastrarCliente(final Cliente cliente)
            throws ErroCadastramento{
        if(!cliente.getCpf().equals(CPF_SUCESSO)){
            throw new ErroCadastramento("Erro no cadastramento do cliente.");
        }
    }
    /**
     * Atualiza o cliente velho pelo cliente novo no banco.
     * @param clienteVelho cliente velho a ser atualizado.
     * @param clienteNovo cliente novo.
     * @throws ErroAtualizacao erro lançado caso a ação não obtenha sucesso.
     */
    @Override
    public void atualizarCliente(Cliente clienteVelho,Cliente clienteNovo)
            throws ErroAtualizacao{
        if(!clienteNovo.getNome().equals(NOME_SUCESSO) ||
                !clienteNovo.getCpf().equals(CPF_SUCESSO) ||
                !clienteNovo.getTelefone().equals(TELEFONE_SUCESSO)){
                throw new ErroAtualizacao("Erro na atualização de dados.");
        }
    }
    /**
     * Recupera o cliente representado pelo objeto cliente.
     * @param cliente cliente a ser recuperado.
     * @return Cliente cliente recuperado do banco.
     * @throws ErroRecuperacao erro lançado caso a ação não obtenha sucesso.
     */
    @Override
    public Cliente recuperarCliente(Cliente cliente) throws ErroRecuperacao{
        if(!cliente.getCpf().equals(CPF_SUCESSO)){
            throw new ErroRecuperacao();
        }

        Cliente cliente2 = new Cliente(NOME_SUCESSO,
                TELEFONE_SUCESSO,CPF_SUCESSO);
        return(cliente2);
    }
}
